// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1
import com.nokia.symbian 1.1
import Qt.labs.folderlistmodel 1.0

ModalDialogBase {
    id: root

    property alias extensoes: arquivosModel.nameFilters
    property string arquivoSelecionado : ""
    property string nomeArquivoSelecionado : ""
    property string caminhoArquivoSelecionado: ""

    onArquivoSelecionadoChanged: {        
        var path = arquivoSelecionado.substring(0, arquivoSelecionado.lastIndexOf("/"));
        caminhoArquivoSelecionado = "file:///" + path;
        nomeArquivoSelecionado = arquivoSelecionado.substring(arquivoSelecionado.lastIndexOf("/") + 1);        
        arquivoSelecionadoMudou(root.arquivoSelecionado);
    }

    signal fecharJanela();
    signal arquivoSelecionadoMudou(string arquivo)

    FolderListModel {
        id: arquivosModel
        showDirs: true
        showDotAndDotDot: false
        sortField: FolderListModel.Type
        folder: caminhoArquivoSelecionado
    }

    Item {
        id: itemToolbarFiles
        anchors { left: parent.left; top: parent.top; right: parent.right; margins: 5 }
        height: 50

        Button {
            text: "Voltar"
            onClicked: {
                arquivosModel.folder = arquivosModel.parentFolder;
                lst.currentIndex = -1;
            }
        }
    }

    ListView {
        id: lst
        anchors { left: parent.left; top: itemToolbarFiles.bottom; right: parent.right; bottom: parent.bottom; bottomMargin: 50; margins: 5}
        model: arquivosModel
        clip: true
        snapMode: ListView.SnapOneItem
        header: Item {
            width: lst.width; height: (txtHeader.text.length > 0 ? 48 : 0)

            Text {
                id: txtHeader
                color: platformStyle.colorNormalLight
                text: (retornarCaminho() != "" ? "Em " + retornarCaminho() : "");
                font { pixelSize: 20; bold: true }

                function retornarCaminho() {
                    var path = (arquivosModel.folder.toString().replace("file:///", "") != undefined ? arquivosModel.folder.toString().replace("file:///", "") : "");
                    path = path.replace("/", "\\");
                    return path;
                }
            }
        }
        currentIndex: -1
        highlight: Rectangle {
            width: lst.width; height: 48;
            color: "brown"
        }
        highlightFollowsCurrentItem: true
        delegate: Item {
            width: lst.width; height: childrenRect.height            

            Column {
                width: parent.width;

                Flow {
                    width: parent.width;
                    spacing: 2

                    Image {
                        width: 48; height: 48
                        source: "qrc:///" + ( arquivosModel.isFolder(index) ? "diretorio" : "arquivo");
                    }
                    Text {
                        width: parent.width - 52
                        color: platformStyle.colorNormalLight
                        text: fileName
                        wrapMode: Text.NoWrap
                        font.pixelSize: 18
                    }
                }

                Rectangle {
                    width: parent.width; height: 1
                    color: platformStyle.colorNormalMid
                }

                Component.onCompleted: {
                    if (fileName == root.nomeArquivoSelecionado) {
                        lst.currentIndex = index;
                    }
                }
            }

            MouseArea {
                anchors.fill: parent

                Timer {
                    id: delay
                    interval: 300
                    running: false
                    onTriggered: {
                        if (arquivosModel.isFolder(index)) {
                            arquivosModel.folder = filePath;
                            lst.currentIndex = -1;
                        } else {
                            var arq = filePath.toString();
                            arq = arq.replace("file:///", "");
                            console.debug(arq);
                            root.arquivoSelecionado = arq;
                        }
                    }
                }
                onClicked: {
                    lst.currentIndex = index;
                    delay.start();
                }
            }
        }
    }

    Button {
        id: btn
        text: "Fechar"
        anchors { left: parent.left; top: lst.bottom; right: parent.right; bottom: parent.bottom; margins: 5 }
        onClicked: {
            root.fechar();            
            root.fecharJanela();
        }
    }
}
